sgdk
|
00001 00020 #ifndef _MEMORY_H_ 00021 #define _MEMORY_H_ 00022 00023 00028 #define STACK_SIZE 0x400 00029 00033 #define MEMORY_HIGH (0x01000000 - STACK_SIZE) 00034 00035 00040 #define GET_DWORDFROMPBYTE(src) ((src[0] << 24) | (src[1] << 16) | (src[2] << 8) | (src[3] << 0)) 00041 00045 #define GET_DWORDFROMPBYTE_LI(src) ((src[0] << 0) | (src[1] << 8) | (src[2] << 16) | (src[3] << 24)) 00046 00050 #define GET_WORDFROMPBYTE(src) ((src[0] << 8) | (src[1] << 0)) 00051 00055 #define GET_WORDFROMPBYTE_LI(src) ((src[0] << 0) | (src[1] << 8)) 00056 00060 #define GET_DWORDFROMPWORD(src) ((src[0] << 16) | (src[1] << 0)) 00061 00065 #define GET_DWORDFROMPWORD_LI(src) ((src[0] << 0) | (src[1] << 16)) 00066 00067 00072 #define SWAP_u8(x, y) \ 00073 { \ 00074 u8 swp; \ 00075 \ 00076 swp = x; \ 00077 x = y; \ 00078 y = swp; \ 00079 } 00080 00085 #define SWAP_s8(x, y) \ 00086 { \ 00087 s8 swp; \ 00088 \ 00089 swp = x; \ 00090 x = y; \ 00091 y = swp; \ 00092 } 00093 00098 #define SWAP_u16(x, y) \ 00099 { \ 00100 u16 swp; \ 00101 \ 00102 swp = x; \ 00103 x = y; \ 00104 y = swp; \ 00105 } 00106 00111 #define SWAP_s16(x, y) \ 00112 { \ 00113 s16 swp; \ 00114 \ 00115 swp = x; \ 00116 x = y; \ 00117 y = swp; \ 00118 } 00119 00124 #define SWAP_u32(x, y) \ 00125 { \ 00126 u32 swp; \ 00127 \ 00128 swp = x; \ 00129 x = y; \ 00130 y = swp; \ 00131 } 00132 00137 #define SWAP_s32(x, y) \ 00138 { \ 00139 s32 swp; \ 00140 \ 00141 swp = x; \ 00142 x = y; \ 00143 y = swp; \ 00144 } 00145 00146 00151 void MEM_init(); 00156 u16 MEM_getFree(); 00168 void MEM_free(void *ptr); 00183 void* MEM_alloc(u16 size); 00184 00185 00199 void memset(void *to, u8 value, u16 len); 00213 void memsetU16(u16 *to, u16 value, u16 len); 00227 void memsetU32(u32 *to, u32 value, u16 len); 00242 void memcpy(void *to, const void *from, u16 len); 00246 void memcpyU16(u16 *to, const u16 *from, u16 len); 00250 void memcpyU32(u32 *to, const u32 *from, u16 len); 00251 00255 void fastMemset(void *to, u8 value, u16 len); 00259 void fastMemsetU16(u16 *to, u16 value, u16 len); 00263 void fastMemsetU32(u32 *to, u32 value, u16 len); 00267 void fastMemcpy(void *to, const void *from, u16 len); 00271 void fastMemcpyU16(u16 *to, const u16 *from, u16 len); 00275 void fastMemcpyU32(u32 *to, const u32 *from, u16 len); 00276 00277 00278 #endif // _MEMORY_H_